﻿using System;
using System.Collections.Generic;
using Scommesse.Model;
using System.Drawing;
using Scommesse.Utility;

namespace Scommesse.Presenters.Adapters
{
    class PuntataAdapter : IEntity //Classe Adapter utile per poter fare una stampa differente da quella nella Base
    {
        private readonly Quota _quota;
        private readonly Color _backColor;
        private readonly Color _foreColor;
        private readonly Font _font;

        public PuntataAdapter(Quota quota)
        {
            _quota = quota;
            _backColor = Color.Empty;
            _foreColor = Color.Empty;
        }

         public PuntataAdapter(Quota quota, Font font)
         {
             _quota = quota;
             _backColor = Color.Empty;
             _foreColor = Color.Empty;
             _font = font;
         }

        public PuntataAdapter(Quota quota, Color backColor, Color foreColor, Font font)
        {
            if (quota == null)
            {
                throw new ArgumentNullException("puntata!");
            }
            _quota = quota;
            _backColor = backColor;
            _foreColor = foreColor;
            _font = font;
        }

        public string FullName
        {
            get 
            { 
                string punteggiString = " - ";
                var ev = _quota.GetEvento();
                if (ev.Stato.Equals(StatoEvento.Terminato))
                {
                    punteggiString = " " + ev.PunteggioA.ToString() + " - " + ev.PunteggioB.ToString() + " ";
                     
                }
                return "[" + StringValueAttribute.GetStringValue(_quota.Valore.GetValore()) + "] "
                                    + _quota.Moltiplicatore.ToString() + " - " +
                                    ev.CompetitoreA + punteggiString + ev.CompetitoreB + " @ " +
                                    String.Format("{0:dd/MM/yyyy HH:mm}", ev.DataOra) +
                                    " | " + ev.Competizione.Nome + " | " + ev.Competizione.Categoria.Nome;
            }
         }

         public Color BackColor
         {
            get { return _backColor; }
         }

         public Color ForeColor
         {
            get { return _foreColor; }
         }

        public Font Font
        {
            get { return _font; }
        }
    }
}
